# -*- coding:utf-8 -*-
import os
import re
import shutil
from billProcess import BillProcess
from htProcess import HTProcess
from utils import Util
from pathlib import Path


# 功能：处理分析票据XPS程序
# auth:16080951

def clearTmp():
    # ../tmp
    utils = Util()
    tmpPath = utils.config["tmp_path"]
    try:
        # 清除垃圾
        utils.remove(tmpPath)
    except:
        print("清理临时文件结束...")


def clearResult():
    # ../tmp
    utils = Util()
    resultPath = utils.config["result_path"]
    try:
        # 清除垃圾
        utils.remove(resultPath)
    except:
        print("清理result文件结束...")


def process(obj):
    utils = Util()
    tmpPath = utils.config["tmp_path"]
    # 创建处理文件夹
    utils.mkdir(tmpPath)
    print("创建临时文件夹开始...")

    # rename&unzip
    for root, dirs, files in os.walk("../"):
        if root.find("source") >= 0:
            for file in files:
                if len(re.findall('.xps', file)) > 0:
                    shutil.copy(os.path.join(root, file), tmpPath)

        if root.find("tmp") >= 0:
            for file in files:
                # 获取文件名
                fileName = os.path.join(root, file)
                # 获取文件名无后缀
                fileNameNoKZ = "".join(re.findall("(.*).xps", file))
                # 重新命名
                utils.rename_file_to_zip(fileName)
                # 获取绝对路径
                absolutePathName = "".join(re.findall("(.*).xps", os.path.join(root, file)))
                print('当前处理文件：', Path(fileName).as_posix())
                # print('当前absolutePathName：', Path(absolutePathName).as_posix())

                # 创建临时文件夹
                utils.mkdir(absolutePathName)
                # 解压到临时文件夹
                utils.unzip_file(absolutePathName + ".zip", absolutePathName)
                # 处理数据
                pages = utils.getFileNames(absolutePathName + '/Documents/1/Pages')
                # 处理表格
                obj.processSinglePage(fileNameNoKZ, pages)
                # 清理临时文件夹数据
                obj.destory()

    # 移动结果
    utils.moveToResult()


if __name__ == '__main__':
    obj = BillProcess()
    data = input("请输入待转换序号后回车：\n"
                 "1、票据质押式回购成交单XPS转Excel\n"
                 "2、票据转贴现成交单XPS转Excel\n"
                 "备注：\n"
                 "1）请将待转换的文件先放入source文件夹中，不要将票据质押xps和票据转帖xps混放！！\n"
                 "2）不要改变目录结构以及文件夹名\n"
                 "3）转换完成后查看result文件夹\n"
                 "4）有问题请发邮件@16080951\n")
    if data in '1':
        obj = BillProcess()
    else:
        obj = HTProcess()
    print("===批量任务开始===")
    clearTmp()
    clearResult()
    # 开始处理
    process(obj)
    # clearTemp
    clearTmp()
    print("===批量任务结束，请查看result文件夹===")
